#ifndef QUOTE_H
#define QUOTE_H

#include <string>
using namespace std;
class Quote {
  friend double print_total(ostream &, const Quote &, size_t); //定义为友元函数
public:
  /*	Quote() = default;//C++11新特性*/
  Quote(); //默认构造函数
  Quote(const string &book, double sales_price)
      : BookNo(book), price(sales_price) {}
  string isbn() const;                    //保存每本书籍的编号
  virtual double net_price(size_t) const; //定义为虚函数，让派生类自己定价

private:
  string BookNo; //书籍的ISBN编号
protected:
  double price; //普通状态下不打折的价格，C++11不支持非静态变量的类内初始化
};

double print_total(ostream &os, const Quote &item, size_t n) {
  //动态绑定的实例
  double ret = item.net_price(n);
  os << "ISBN:" << item.isbn() << endl;
  os << "sold:" << n << " total price: " << ret << endl;
  return ret;
}

class bulk_quote : public Quote {
public:
  // virtual double net_price(size_t) const; //重新声明
  //允许派生类显示的注明它将使用哪个成员函数改写基类的虚函数
  double net_price(size_t) const override;
};

#endif